﻿using System;
using System.Collections.Generic;
using System.Drawing.Printing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace GenericWin
{
    /// <summary>
    /// Cette classe contient toutes les propriétés de l'application.
    /// Laisse une possibilité d'ajouter une propriété ou 
    /// d'hériter de cette classe dans une application client lourde.
    /// </summary>
    public class Configuration
    {
        #region Attribut(s)


        #endregion

        #region Propriété(s)

        /// <summary>
        /// Numéro de version de l'application
        /// </summary>
        public String Version
        {
            get;
            set;
        }

        /// <summary>
        /// Environnement
        /// </summary>
        public String Env
        {
            get;
            set;
        }

        /// <summary>
        /// Libellé de l'environnement
        /// </summary>
        public String LibelleEnvironnement
        {
            get;
            set;
        }

        /// <summary>
        /// Nom de l'application
        /// </summary>
        public String NomApplication
        {
            get;
            set;
        }

        /// <summary>
        /// Nom de l'imprimante par défaut
        /// </summary>
        public String NomImprimanteParDefaut
        {
            get;
            private set;
        }

        /// <summary>
        /// Instance de la base de donnée
        /// </summary>
        public String InstanceBDD
        {
            get;
            set;
        }

        /// <summary>
        /// Login de l'utilisateur connecté à l'application
        /// </summary>
        public String LoginUserConnecte
        {
            get;
            set;
        }
        
        #endregion

        #region Constructeur(s)

        /// <summary>
        /// Constructeur prenant en paramètre le login de l'utilisateur connecté à l'application
        /// </summary>
        /// <param name="login">Login de l'utilisateur</param>
        public Configuration(String login):this()
        {
            LoginUserConnecte = login;
        }

        /// <summary>
        /// Constructeur vide
        /// </summary>
        public Configuration()
        {
            PrintDocument prtdoc = new PrintDocument();
            NomImprimanteParDefaut = prtdoc.PrinterSettings.PrinterName;
        }

        #endregion

        #region Méthode(s)

        /// <summary>
        /// Méthode virtuelle permettant de redéfinir le message de bienvenue qui est affiché dans la barre en bas à gauche de l'écran principal.
        /// Par défaut : Bienvenue + Login passé en paramètre au constructeur
        /// </summary>
        /// <returns>Retourne un message de bienvenue</returns>
        public virtual String WelcomeMessage()
        {
            return String.Format("Bienvenue {0}", LoginUserConnecte);
        }
        
        #endregion

    }
}
